/*
 * @文件描述:ADC驱动程序
 * @版本:
 * @作者:周晨阳
 * @Date:2021-10-11 19:34:33
 */
#include "adc.h"
#include "system.h"
#if BOARD_INUSE == BOARD_W806

static ADC_HandleTypeDef hadc;
static u32 ADC_ChannelTrans[4] = {ADC_CHANNEL_0, ADC_CHANNEL_1, ADC_CHANNEL_2, ADC_CHANNEL_3};
/**
 * @brief :ADC初始化程序.
 * @param {u32 channel} adc通道
 * @param {u32 freq} adc采样率
 * @return {*}
 */
void ADC_Inilize(u8 channel, u32 freq)
{
    printf("enter adc init\r\n");

    hadc.Instance = ADC;
    hadc.Init.channel = channel;
    hadc.Init.freq = freq;

    if (HAL_ADC_Init(&hadc) != HAL_OK)
    {
        Error_Handler();
    }
    printf("exit adc init\r\n");
}
/**
 * @brief :设置ADC采样率
 * @param {u32} freq
 * @return {*}
 */
void setADC_SampleFreq(u32 freq)
{
    hadc.Init.freq = freq;
}
//========================================================================
// 函数: void   ADC_PowerControl(u8 pwr)
// 描述: ADC电源控制程序.
// 参数: pwr: 电源控制,ENABLE或DISABLE.
// 返回: none.
// 版本: V1.0, 2012-10-22
//========================================================================
void ADC_PowerControl(u8 pwr)
{
    if (pwr == ENABLE)
    {
    }
    else
    {
    }
}
//========================================================================
// 函数: u16    Get_ADC_Result(u8 channel)
// 描述: 查询法读一次ADC结果.
// 参数: channel: 选择要转换的ADC.
// 返回: 10位ADC结果.
// 版本: V1.0, 2012-10-22
//========================================================================
u16 Get_ADC_Result(u8 channel) //channel = 0~7
{
    if (channel > 4)
        return;

    hadc.Init.channel = ADC_ChannelTrans[channel];

    HAL_ADC_Start(&hadc);
    HAL_ADC_PollForConversion(&hadc);
    HAL_ADC_Stop(&hadc);
    return HAL_ADC_GetValue(&hadc);
}
/**
 * @brief :获取ADC的输入值,单位mv
 * @param {u32} channel ADC通道
 * @return {*}
 */
float getInputVoltage(u8 channel)
{
    if (channel > 4)
        return;
    hadc.Init.channel = ADC_ChannelTrans[channel];
    return HAL_ADC_GET_INPUT_VOLTAGE(&hadc);
}
/**
 * @brief :内部回调函数
 * @param {ADC_HandleTypeDef*} hadc
 * @return {*}
 */
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
}
u8 angle2ADCMap(u8 angle)
{
    return angle;
}

#endif
